package it.clariter.dao;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

import it.clariter.connection.MyConnection;
import it.clariter.model.*;
import it.clariter.utils.DateUtils;

public class DocumentoDAO {

	public int insert(Documento documento,InputStream bis, File file) throws FileNotFoundException{
		Connection c=null;
		PreparedStatement ps=null;
		int result=0;
		try
		{
			c=MyConnection.getConnection();
			ps=c.prepareStatement("INSERT INTO "+DaoConstants.NOME_TABELLA_DOCUMENTO+" SET "+DaoConstants.COLONNA_PROTOCOLLO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DATA_PROTOCOLLO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DATA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_LOCALIZZAZIONE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DESCRIZIONE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_VERSO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_AREA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_MITTENTE_DESTINATARIO+"=?,"+DaoConstants.COLONNA_TIPOLOGIA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_AZIENDA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_UTENTE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_ATTIVO_DOCUMENTO+"=?");
			ps.setString(1, documento.getProtocollo());
			ps.setDate(2, new Date (documento.getDataProtocollo().getTime()));
			if(documento.getDataDocumento()!=null)
				ps.setDate(3, new Date (documento.getDataDocumento().getTime()));
			else
				ps.setNull(3, 0);
			ps.setString(4, documento.getLocalizzazione());
			if(documento.getDescrizione()!=null)
				ps.setString(5, documento.getDescrizione());
			else
				ps.setNull(5, 0);
			if(bis!=null)
				ps.setBinaryStream(6, bis, (int) file.length());
			else
				ps.setNull(6, 0);
			ps.setInt(7, documento.getVerso().getIdVerso());
			ps.setInt(8, documento.getArea().getIdArea());
			ps.setString(9, documento.getMittenteDestinatario());
			ps.setInt(10, documento.getTipologiaDocumento().getIdDocumento());
			ps.setInt(11, documento.getAzienda().getIdAzienda());
			ps.setInt(12, documento.getUtente().getIdUtente());
			ps.setInt(13, 11);
			result=ps.executeUpdate();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				ps.close();
				c.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		return result;
	}
	public int update(Documento documento,InputStream bis, File file) throws FileNotFoundException
	{
		Connection c=null;
		PreparedStatement ps=null;
		int result=0;
		try
		{
			c=MyConnection.getConnection();
			ps=c.prepareStatement("UPDATE "+DaoConstants.NOME_TABELLA_DOCUMENTO+" SET "+DaoConstants.COLONNA_PROTOCOLLO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DATA_PROTOCOLLO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DATA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_LOCALIZZAZIONE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DESCRIZIONE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_VERSO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_AREA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_MITTENTE_DESTINATARIO+"=?,"+DaoConstants.COLONNA_TIPOLOGIA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_AZIENDA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_UTENTE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_ATTIVO_DOCUMENTO+"=? WHERE "+DaoConstants.COLONNA_ID_DOCUMENTO+"=?");
			ps.setString(1, documento.getProtocollo());
			ps.setDate(2, new Date (documento.getDataProtocollo().getTime()));
			if(documento.getDataDocumento()!=null)
				ps.setDate(3, new Date (documento.getDataDocumento().getTime()));
			else
				ps.setNull(3, 0);
			ps.setString(4, documento.getLocalizzazione());
			if(documento.getDescrizione()!=null)
				ps.setString(5, documento.getDescrizione());
			else
				ps.setNull(5, 0);
			if(bis!=null)
				ps.setBinaryStream(6, bis, (int) file.length());
			else
				ps.setNull(6, 0);
			ps.setInt(7, documento.getVerso().getIdVerso());
			ps.setInt(8, documento.getArea().getIdArea());
			ps.setString(9, documento.getMittenteDestinatario());
			ps.setInt(10, documento.getTipologiaDocumento().getIdDocumento());
			ps.setInt(11, documento.getAzienda().getIdAzienda());
			ps.setInt(12, documento.getUtente().getIdUtente());
			ps.setInt(13, documento.getAttivo());
			ps.setInt(14, documento.getIdDocumento());
			result=ps.executeUpdate();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				ps.close();
				c.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		return result;
	}
	public int delete (int idva)
	{
		Connection c=null;
		PreparedStatement ps=null;
		int result=0;
		try
		{
			c=MyConnection.getConnection();
			ps=c.prepareStatement("DELETE FROM "+DaoConstants.NOME_TABELLA_DOCUMENTO+" WHERE "+DaoConstants.COLONNA_ID_DOCUMENTO+"=?");
			ps.setInt(1, idva);
			result=ps.executeUpdate();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				ps.close();
				c.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		return result;
	}
	public List<Documento> getList()
	{
		Connection c=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		List<Documento>documenti=new ArrayList<Documento>();
		Documento documento=null;
		try
		{
			c=MyConnection.getConnection();
			ps=c.prepareStatement("SELECT * FROM "+DaoConstants.NOME_TABELLA_DOCUMENTO+" dc, "+DaoConstants.NOME_TABELLA_VERSO+" vr, "+DaoConstants.NOME_TABELLA_AREA+" ar, "+DaoConstants.NOME_TABELLA_TIPOLOGIA_DOCUMENTO+" tp, "+DaoConstants.NOME_TABELLA_AZIENDA+" az, "+DaoConstants.NOME_TABELLA_UTENTE+" ut WHERE dc."+DaoConstants.COLONNA_VERSO_DOCUMENTO+"= vr."+DaoConstants.COLONNA_ID_VERSO+" AND dc."+DaoConstants.COLONNA_AREA_DOCUMENTO+"= ar."+DaoConstants.COLONNA_ID_AREA+" AND dc."+DaoConstants.COLONNA_TIPOLOGIA_DOCUMENTO+"= tp."+DaoConstants.COLONNA_ID_TIPOLOGIA_DOCUMENTO+" AND dc."+DaoConstants.COLONNA_AZIENDA_DOCUMENTO+"= az."+DaoConstants.COLONNA_ID_AZIENDA+" AND dc."+DaoConstants.COLONNA_UTENTE_DOCUMENTO+"= ut."+DaoConstants.COLONNA_ID_UTENTE);
			rs=ps.executeQuery();
			while(rs.next())
			{
				documento=new Documento();
				documento=makeObject(documento,rs);
				documenti.add(documento);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				rs.close();
				ps.close();
				c.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		return documenti;
	}
	public Documento get(int idva)
	{
		Connection c=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		Documento documento=null;
		try
		{
			c=MyConnection.getConnection();
			ps=c.prepareStatement("SELECT * FROM "+DaoConstants.NOME_TABELLA_DOCUMENTO+" dc, "+DaoConstants.NOME_TABELLA_VERSO+" vr, "+DaoConstants.NOME_TABELLA_AREA+" ar, "+DaoConstants.NOME_TABELLA_TIPOLOGIA_DOCUMENTO+" tp, "+DaoConstants.NOME_TABELLA_AZIENDA+" az, "+DaoConstants.NOME_TABELLA_UTENTE+" ut, "+DaoConstants.NOME_TABELLA_RUOLO+" WHERE dc."+DaoConstants.COLONNA_VERSO_DOCUMENTO+"= vr."+DaoConstants.COLONNA_ID_VERSO+" AND dc."+DaoConstants.COLONNA_AREA_DOCUMENTO+"= ar."+DaoConstants.COLONNA_ID_AREA+" AND dc."+DaoConstants.COLONNA_TIPOLOGIA_DOCUMENTO+"= tp."+DaoConstants.COLONNA_ID_TIPOLOGIA_DOCUMENTO+" AND dc."+DaoConstants.COLONNA_AZIENDA_DOCUMENTO+"= az."+DaoConstants.COLONNA_ID_AZIENDA+" AND dc."+DaoConstants.COLONNA_UTENTE_DOCUMENTO+"= ut."+DaoConstants.COLONNA_ID_UTENTE+" AND "+DaoConstants.COLONNA_ID_RUOLO+"="+DaoConstants.COLONNA_RUOLO_UTENTE+" AND dc."+DaoConstants.COLONNA_ID_DOCUMENTO+"=?");
			ps.setInt(1, idva);
			rs=ps.executeQuery();
			if(rs.next())
			{
				documento=new Documento();
				documento=makeObject(documento,rs);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				rs.close();
				ps.close();
				c.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		return documento;
	}
	public List<Documento> findByExample(Documento documento)
	{
		Connection c=null;
		Statement stm=null;
		ResultSet rs=null;
		Documento documento1=null;
		List<Documento>documenti=new ArrayList<Documento>();
		String query="SELECT * FROM "+DaoConstants.NOME_TABELLA_DOCUMENTO+", "+DaoConstants.NOME_TABELLA_VERSO+", "+DaoConstants.NOME_TABELLA_AREA+", "+DaoConstants.NOME_TABELLA_TIPOLOGIA_DOCUMENTO+", "+DaoConstants.NOME_TABELLA_AZIENDA+", "+DaoConstants.NOME_TABELLA_UTENTE+","+DaoConstants.NOME_TABELLA_RUOLO+"  WHERE "+DaoConstants.COLONNA_VERSO_DOCUMENTO+"= "+DaoConstants.COLONNA_ID_VERSO+" AND "+DaoConstants.COLONNA_AREA_DOCUMENTO+"= "+DaoConstants.COLONNA_ID_AREA+" AND "+DaoConstants.COLONNA_TIPOLOGIA_DOCUMENTO+"= "+DaoConstants.COLONNA_ID_TIPOLOGIA_DOCUMENTO+" AND "+DaoConstants.COLONNA_AZIENDA_DOCUMENTO+"= "+DaoConstants.COLONNA_ID_AZIENDA+" AND "+DaoConstants.COLONNA_UTENTE_DOCUMENTO+"= "+DaoConstants.COLONNA_ID_UTENTE+" AND "+DaoConstants.COLONNA_RUOLO_UTENTE+"= "+DaoConstants.COLONNA_ID_RUOLO;
		try
		{
			c=MyConnection.getConnection();
			if(documento.getAttivo()==0 || documento.getAttivo()==11)
			{
				query=query+" AND "+DaoConstants.COLONNA_ATTIVO_DOCUMENTO+" = "+documento.getAttivo()+" ";
			}
			if((documento.getProtocollo()!=null)&&(!(documento.getProtocollo().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_PROTOCOLLO_DOCUMENTO+" LIKE '%"+documento.getProtocollo()+"%' ";
			}
			if((documento.getDataProtocollo()!=null)&&(!(documento.getDataProtocollo().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_DATA_PROTOCOLLO_DOCUMENTO+" LIKE '"+documento.getDataProtocollo()+"%' ";
			}
			if((documento.getDataDocumento()!=null)&&(!(documento.getDataDocumento().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_DATA_DOCUMENTO+" LIKE '"+documento.getDataDocumento()+"%' ";
			}
			if((documento.getLocalizzazione()!=null)&&(!(documento.getLocalizzazione().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_LOCALIZZAZIONE_DOCUMENTO+" LIKE '"+documento.getLocalizzazione()+"%' ";
			}
			if((documento.getDescrizione()!=null)&&(!(documento.getDescrizione().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_DESCRIZIONE_DOCUMENTO+" LIKE '"+documento.getDescrizione()+"%' ";
			}
			if(documento.getVerso()!= null && (documento.getVerso().getCodice()!=null)&&(!(documento.getVerso().getCodice().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_CODICE_VERSO+" LIKE '"+documento.getVerso().getCodice()+"%' ";
			}
			if(documento.getVerso()!= null && (documento.getVerso().getDescrizione()!=null)&&(!(documento.getVerso().getDescrizione().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_DESCRIZIONE_VERSO+" LIKE '"+documento.getVerso().getDescrizione()+"%' ";
			}
			if(documento.getArea()!= null && (documento.getArea().getCodice()!=null)&&(!(documento.getArea().getCodice().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_CODICE_AREA+" LIKE '"+documento.getArea().getCodice()+"%' ";
			}
			if(documento.getArea()!= null && (documento.getArea().getDescrizione()!=null)&&(!(documento.getArea().getDescrizione().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_DESCRIZIONE_AREA+" LIKE '"+documento.getArea().getDescrizione()+"%' ";
			}
			if(documento.getMittenteDestinatario()!= null && (!(documento.getMittenteDestinatario().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_MITTENTE_DESTINATARIO+" LIKE '"+documento.getMittenteDestinatario()+"%' ";
			}
			if(documento.getTipologiaDocumento() != null && (documento.getTipologiaDocumento().getCodice()!=null)&&(!(documento.getTipologiaDocumento().getCodice().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_CODICE_TIPOLOGIA_DOCUMENTO+" LIKE '"+documento.getTipologiaDocumento().getCodice()+"%' ";
			}
			if(documento.getTipologiaDocumento() != null && (documento.getTipologiaDocumento().getDescrizione()!=null)&&(!(documento.getTipologiaDocumento().getDescrizione().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_DESCRIZIONE_TIPOLOGIA_DOCUMENTO+" LIKE '"+documento.getTipologiaDocumento().getDescrizione()+"%' ";
			}
			if(documento.getAzienda() != null && (documento.getAzienda().getCodice()!=null)&&(!(documento.getAzienda().getCodice().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_CODICE_AZIENDA+" LIKE '"+documento.getAzienda().getCodice()+"%' ";
			}
			if(documento.getAzienda() != null && (documento.getAzienda().getDescrizione()!=null)&&(!(documento.getAzienda().getDescrizione().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_DESCRIZIONE_AZIENDA+" LIKE '"+documento.getAzienda().getDescrizione()+"%' ";
			}
			if(documento.getAzienda() != null && (documento.getAzienda().getRagioneSociale()!=null)&&(!(documento.getAzienda().getRagioneSociale().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_RAGIONE_SOCIALE_AZIENDA+" LIKE '"+documento.getAzienda().getRagioneSociale()+"%' ";
			}
			if(documento.getAzienda() != null && (documento.getAzienda().getIndirizzo()!=null)&&(!(documento.getAzienda().getIndirizzo().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_INDIRIZZO_AZIENDA+" LIKE '"+documento.getAzienda().getIndirizzo()+"%' ";
			}
			if(documento.getAzienda() != null && (documento.getAzienda().getCodiceFiscale()!=null)&&(!(documento.getAzienda().getCodiceFiscale().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_CODICE_FISCALE_AZIENDA+" LIKE '"+documento.getAzienda().getCodiceFiscale()+"%' ";
			}
			if(documento.getUtente() != null && (documento.getUtente().getNome()!=null)&&(!(documento.getUtente().getNome().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_NOME_UTENTE+" LIKE '"+documento.getUtente().getNome()+"%' ";
			}
			if(documento.getUtente() != null && (documento.getUtente().getCognome()!=null)&&(!(documento.getUtente().getCognome().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_COGNOME_UTENTE+" LIKE '"+documento.getUtente().getCognome()+"%' ";
			}
			if(documento.getUtente() != null && (documento.getUtente().getLogin()!=null)&&(!(documento.getUtente().getLogin().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_LOGIN_UTENTE+" LIKE '"+documento.getUtente().getLogin()+"%' ";
			}
			if(documento.getUtente() != null && (documento.getUtente().getPassword()!=null)&&(!(documento.getUtente().getPassword().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_PASSWORD_UTENTE+" LIKE '"+documento.getUtente().getPassword()+"%' ";
			}
			if(documento.getUtente() != null && (documento.getUtente().getDataIscrizione()!=null)&&(!(documento.getUtente().getDataIscrizione().equals(""))))
			{
				query=query+" AND "+DaoConstants.COLONNA_DATA_ISCRIZIONE_UTENTE+" LIKE '"+documento.getUtente().getDataIscrizione()+"%' ";
			}
			stm=c.createStatement();
//			System.out.println("\n\n"+query+"\n\n");
			rs=stm.executeQuery(query);
			while(rs.next())
			{
				documento1=new Documento();
				documento1=makeObject(documento1,rs);
				documenti.add(documento1);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				rs.close();
				stm.close();
				c.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		return documenti;
}
	public Documento makeObject(Documento documento,ResultSet rs) throws SQLException
	{
		Verso verso=new Verso();
		Area area=new Area();
		TipologiaDocumento tipologiaDocumento=new TipologiaDocumento();
		Azienda azienda=new Azienda();
		Utente utente=new Utente();
		verso=new VersoDAO().makeObject(verso, rs);
		area=new AreaDAO().makeObject(area, rs);
		tipologiaDocumento=new TipologiaDocumentoDAO().makeObject(tipologiaDocumento, rs);
		azienda=new AziendaDAO().makeObject(azienda, rs);
		utente= new UtenteDAO().makeObject(utente, rs);
		documento.setVerso(verso);
		documento.setArea(area);
		documento.setTipologiaDocumento(tipologiaDocumento);
		documento.setAzienda(azienda);
		documento.setUtente(utente);
		documento.setIdDocumento(rs.getInt(DaoConstants.COLONNA_ID_DOCUMENTO));
		documento.setProtocollo(rs.getString(DaoConstants.COLONNA_PROTOCOLLO_DOCUMENTO));
		documento.setDataProtocollo(rs.getDate(DaoConstants.COLONNA_DATA_PROTOCOLLO_DOCUMENTO));
		documento.setDataDocumento(rs.getDate(DaoConstants.COLONNA_DATA_DOCUMENTO));
		documento.setLocalizzazione(rs.getString(DaoConstants.COLONNA_LOCALIZZAZIONE_DOCUMENTO));
		documento.setDescrizione(rs.getString(DaoConstants.COLONNA_DESCRIZIONE_DOCUMENTO));
		documento.setMittenteDestinatario(rs.getString(DaoConstants.COLONNA_MITTENTE_DESTINATARIO));
		documento.setDocumento(rs.getBlob(DaoConstants.COLONNA_DOCUMENTO));
		documento.setAttivo(rs.getInt(DaoConstants.COLONNA_ATTIVO_DOCUMENTO));
		return documento;
	}

	public int update(Documento documento) {
		Connection c=null;
		PreparedStatement ps=null;
		int result=0;
		try
		{
			c=MyConnection.getConnection();
			ps=c.prepareStatement("UPDATE "+DaoConstants.NOME_TABELLA_DOCUMENTO+" SET "+DaoConstants.COLONNA_PROTOCOLLO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DATA_PROTOCOLLO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DATA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_LOCALIZZAZIONE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_DESCRIZIONE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_VERSO_DOCUMENTO+"=?,"+DaoConstants.COLONNA_AREA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_MITTENTE_DESTINATARIO+"=?,"+DaoConstants.COLONNA_TIPOLOGIA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_AZIENDA_DOCUMENTO+"=?,"+DaoConstants.COLONNA_UTENTE_DOCUMENTO+"=?,"+DaoConstants.COLONNA_ATTIVO_DOCUMENTO+"=? WHERE "+DaoConstants.COLONNA_ID_DOCUMENTO+"=?");
			ps.setString(1, documento.getProtocollo());
			ps.setDate(2, new Date (documento.getDataProtocollo().getTime()));
			if(documento.getDataDocumento()!=null)
				ps.setDate(3, new Date (documento.getDataDocumento().getTime()));
			else
				ps.setNull(3, 0);
			ps.setString(4, documento.getLocalizzazione());
			if(documento.getDescrizione()!=null)
				ps.setString(5, documento.getDescrizione());
			else
				ps.setNull(5, 0);
			ps.setInt(6, documento.getVerso().getIdVerso());
			ps.setInt(7, documento.getArea().getIdArea());
			ps.setString(8, documento.getMittenteDestinatario());
			ps.setInt(9, documento.getTipologiaDocumento().getIdDocumento());
			ps.setInt(10, documento.getAzienda().getIdAzienda());
			ps.setInt(11, documento.getUtente().getIdUtente());
			ps.setInt(12, documento.getAttivo());
			ps.setInt(13, documento.getIdDocumento());
			result=ps.executeUpdate();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				ps.close();
				c.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		return result;
	}
	
	public boolean isChanged (Documento documentoNuovo){
		
		Documento documento = get(documentoNuovo.getIdDocumento());
		if(documento.getArea().getIdArea()==documentoNuovo.getArea().getIdArea() && documento.getVerso().getIdVerso()==documentoNuovo.getVerso().getIdVerso()
				&&documento.getTipologiaDocumento().getIdDocumento()==documentoNuovo.getTipologiaDocumento().getIdDocumento()
				&&documento.getAzienda().getIdAzienda()==documentoNuovo.getAzienda().getIdAzienda())
			return false;
		else
			return true;
		
	}
	
	
	
	public static void main(String args[]){
		
		File file = new File("C:\\Users\\Dario\\Documents\\Lavoro Clariter\\Cedolini\\Gennaio.pdf");
		Documento doc = new Documento();
		
		doc.setProtocollo("ENE-0004-042012-BPM-I-ADM");
		doc.setLocalizzazione("localizzato");
		doc.setDescrizione("Busta paga Gennaio 2012");
		doc.setDataProtocollo(DateUtils.getCurrentDate());
		Area area = new AreaDAO().get(1);
		doc.setArea(area);
		Verso verso = new VersoDAO().get(1);
		doc.setVerso(verso);
		doc.setMittenteDestinatario("La Torretta srl");
		Azienda azienda = new AziendaDAO().get(2);
		doc.setAzienda(azienda);
		Utente u = new Utente();
		u.setIdUtente(1);
		u =  new UtenteDAO().get(u);
		doc.setUtente(u);
		TipologiaDocumento tip = new TipologiaDocumentoDAO().get(1);
		doc.setTipologiaDocumento(tip);
		FileInputStream is = null;
		try {
			is = new FileInputStream(file);
		} catch (FileNotFoundException e) {
			System.out.println("File non trovato");
			e.printStackTrace();
		}
		catch (Exception e) {
			System.out.println("Errore generico");
			e.printStackTrace();
		}
		
		try {
			new DocumentoDAO().insert(doc, is, file);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}
